package cn.jjxx.modules.map.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;
import org.apache.poi.ss.formula.functions.T;

import com.baomidou.mybatisplus.mapper.BaseMapper;

import cn.jjxx.modules.map.entity.RelateInfo;

public interface CommonMapMapper extends BaseMapper<T> {

	/**
	 * @Description: 获取指定连接的指定数据库的表信息 .<br>
	 * @param dbName 数据库名.<br>
	 * @param tableName 表名.<br>
	 * @param tableComment 表注解.<br>
	 * @return 返回数据库解锁.<br>   
	 * @author 郑成功 .<br>
	 * @date 2018-6-4 上午9:20:26.<br>
	 */
	List<Map<String,Object>> selectDbTables(@Param("dbName")String dbName,
			@Param("tableName")String tableName,@Param("tableComment")String tableComment);
	
	/**
	 * @Description: 获取指定数据库、指定表的所有表结构 .<br>
	 * @param dbName 数据库名.<br>
	 * @param tableName 表名.<br>
	 * @author 郑成功 .<br>
	 * @date 2018-6-4 上午9:24:24.<br>
	 */
	List<Map<String,Object>> selectTableInfos(@Param("dbName")String dbName,@Param("tableName")String tableName);
	
	/**
	 * @Description: 根据指定sql查询相关数据 .<br>
	 * @param sql 指定sql.<br>
	 * @author 郑成功 .<br>
	 * @date 2018-6-4 上午9:27:14.<br>
	 */
	List<Map<String,Object>> selectBySql(@Param("sql")String sql);
	
	/**
	 * @Description: 检测某一张表被关联的信息 .<br>
	 * @param dbName 数据库名.<br>
	 * @param tableName 表名.<br>
	 * @author 郑成功 .<br>
	 * @date 2018-6-4 上午9:27:14.<br>
	 */
	List<Map<String,Object>> selectRelateInfo(@Param("dbName")String dbName,@Param("tableName")String tableName);
	
	/**
	 * @Description: 检测相关的Id是否被使用 .<br>
	 * @param relateInfos 所有关联表的信息.<br>
	 * @param ids 检测的Id集合.<br>
	 * @author 郑成功 .<br>
	 * @date 2018-6-4 上午10:01:39.<br>
	 */
	Long checkQuoteInfos(@Param("list")List<RelateInfo> relateInfos,@Param("ids")List<String> ids); 
	
	/**
	 * @Description: 检测相关的Id是否被使用 .<br>
	 * @param relateInfo 指定关联表的信息.<br>
	 * @param ids 检测的Id集合.<br>
	 * @author 郑成功 .<br>
	 * @date 2018-6-4 上午10:01:39.<br>
	 */
	Long checkQuoteInfo(@Param("relateInfo")RelateInfo relateInfo, @Param("ids")List<String> ids);
	
	/**
	 * @Description: 根据sql更新数据 .<br>
	 * @param sql 传入的sql.<br>
	 * @author 郑成功 .<br>
	 * @date 2018-7-26 上午11:09:51.<br>
	 */
	boolean updateBySql(@Param("sql")String sql);
	
	/**
	 * @Description: 根据sql新增数据 .<br>
	 * @param sql 传入的sql.<br>
	 * @author 郑成功 .<br>
	 * @date 2018-7-26 上午11:09:51.<br>
	 */
	boolean insertBySql(@Param("sql")String sql);
	
	/**
	 * @Description: 根据sql删除数据 .<br>
	 * @param sql 传入的sql.<br>
	 * @author 郑成功 .<br>
	 * @date 2018-7-26 上午11:09:51.<br>
	 */
	boolean deleteBySql(@Param("sql")String sql);
}
